package com.example.configuration;

import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.util.Objects;

/**
 * @author hmg
 * 文件保存
 */
public class SaveFile {

    /**
     *
     * @param file 文件
     * @param fileName 文件名
     * @param fileAddress 文件地址
     * @return 返回值
     */
    public static String DoSaveFile(MultipartFile file, String fileName, String fileAddress) {
        //获取文件输入流
        try (InputStream inputStream = file.getInputStream()) {
            //替换反斜杠
            String newFileName = fileName.replace("/", "-");
            //文件名没有类型
            if (!fileName.contains(".")) {
                //文件类型
                String fileType = Objects.requireNonNull(file.getOriginalFilename()).substring(file.getOriginalFilename().lastIndexOf(".") + 1);
                newFileName = newFileName + "." + fileType;
            }
            //新建文件夹
            File tempFile = new File(fileAddress);
            //判断文件夹是否存在
            if (!tempFile.exists()) {
                boolean mkdirs = tempFile.mkdirs();
                if (!mkdirs) {
                    return "创建文件夹失败！！！";
                }
            }
            //保存到文件夹
            try (OutputStream os = new FileOutputStream(tempFile.getPath() + File.separator + newFileName)) {
                //1K的数据缓冲
                byte[] bs = new byte[1024];
                //读取到的数据长度
                int len;
                //开始读取
                while ((len = inputStream.read(bs)) != -1) {
                    os.write(bs, 0, len);}
            } catch (IOException e) {
                return "获取文件流错误,错误信息：" + e.getMessage();
            }
            return newFileName;
        } catch (Exception e) {
            return "保存文件出错！！！" + e.getMessage();
        }
    }





}
